package com.zhu.exercise.array;

import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * 数组内的单一一个数
 */
public class IntersectArray {
    /**
     * 指针解决方法。
     * @param nums1
     * @param nums2
     * @return
     */
    public int[] intersect(int[] nums1, int[] nums2) {
        int[] result = new int[Math.min(nums1.length,nums2.length)];
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        int a1Index = 0;int a2index=0;int rindex=0;
        while(a1Index<nums1.length&&a2index<nums2.length){
            if(nums1[a1Index]==nums2[a2index]){
                result[rindex]=nums1[a1Index];
                a1Index++;
                a2index++;
                rindex++;
            }else{
                if(nums1[a1Index]>nums2[a2index]){
                    a2index++;
                }else {
                    a1Index++;
                }
            }
        }
        return  Arrays.copyOfRange(result,0,rindex);

    }

    @Test
    public void run(){
        int[] array1 = {4,9,5};
        int[] array2 = {9,4,9,8,4};
        int[] result = intersect(array1,array2);
        Arrays.stream(result).forEach(e->{
            System.out.println(e);
        });
    }
}
